package multiThread.lock;

import java.util.concurrent.locks.ReentrantLock;

/**
 * @projectName: java-sample
 * @description:
 * @author: Adam
 * @create: 2019-12-30 20:47
 **/

/**
 * lock 提供了比 synchronized方法和代码块更广泛的锁定操作，Lock实现允许更灵活的结构，可以具有差别很大的属性，并且支持多个相关的condition对象
 * 在线程安全的控制中，比较常用的是ReentrantLock(可重入锁)。使用该Lock对象可以显示地加锁、释放锁。
 */
public class LockDemo {

    private final ReentrantLock lock = new ReentrantLock();

    public void m(){

        lock.lock();
        try {
            //需要保证线程安全的方法
            //...
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //释放锁
            lock.unlock();
        }
    }
}
